Description:

Workflow begin

This tutorial comes from Seurat

Load required packages

library(dplyr)
library(Seurat)
library(leiden)
library(ggplot2)
library(patchwork)

Load data

Input is a directory that contains CellRanger count outputs

previous_time <- proc.time()[3]
Estrus.data <-Read10X(data.dir ="/home/nguyen/Estrus_cellranger_count/Estrus_Raw/")
proc.time()[3] - previous_time
elapsed 
  7.678 
  • View(Estrus.data) - run this command to investigate the output
  • Current dataset:
    • 31253 genes
    • 6599 cells

Initialize the Seurat object

  • Initialize the Seurat object with the raw (non-normalized data).
  • Filter out genes that are detected in less than 3 cells
  • Filter out cells that have less than 200 genes expressed
previous_time <- proc.time()[3]
Estrus <- CreateSeuratObject(counts = Estrus.data, project = "Estrus", min.cells = 3, min.features = 200)
proc.time()[3] - previous_time
elapsed 
   1.49 
Estrus
An object of class Seurat 
19420 features across 6481 samples within 1 assay 
Active assay: RNA (19420 features, 0 variable features)
  • Output:
    • 19420 genes
    • 6481 cells

Mitochondiral genes overview

# This is the list of genes that start with mt
mito_genes <- grep("^mt-", rownames(Estrus) , ignore.case=T, value=T)
print(mito_genes)
 [1] "mt-Nd1"  "mt-Nd2"  "mt-Co1"  "mt-Co2"  "mt-Atp8" "mt-Atp6" "mt-Co3"  "mt-Nd3"  "mt-Nd4l" "mt-Nd4"  "mt-Nd5"  "mt-Nd6"  "mt-Cytb"

mt-Nd6 and mt-Cytb will be manually deleted

counts <- GetAssayData(Estrus, assay = "RNA")
counts <- counts[-(which(rownames(counts) %in% c("mt-Nd6", "mt-Cytb"))),]
Estrus <- subset(Estrus, features = rownames(counts))
# This is the list of genes that start with mt
mito_genes <- grep("^mt-", rownames(Estrus) , ignore.case=T, value=T)
print(mito_genes)
 [1] "mt-Nd1"  "mt-Nd2"  "mt-Co1"  "mt-Co2"  "mt-Atp8" "mt-Atp6" "mt-Co3"  "mt-Nd3"  "mt-Nd4l" "mt-Nd4"  "mt-Nd5" 
  • “mt-Nd6”, “mt-Cytb” were deleted

Calculate the percentage of mitochondrial genes

  • Add “percent.mt” column to object metadata
  • Percentage of mitochondrial genes is stored in “percent.mt”
  • “^mt-” means strings start with mt (lowercase mt for mice, uppercase MT for human)
Estrus[["percent.mt"]] <- PercentageFeatureSet(Estrus, pattern = "^mt-")
# This is the data in "percent.mt" column
percent_mito <- FetchData(object = Estrus, vars = "percent.mt") #how to fetch data
head(percent_mito)
# Visualize QC metrics as a violin plot
VlnPlot(Estrus, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
# FeatureScatter is typically used to visualize feature-feature relationships, but can be used
# for anything calculated by the object, i.e. columns in object metadata, PC scores etc.
plot1 <- FeatureScatter(Estrus, feature1 = "nCount_RNA", feature2 = "percent.mt")
plot2 <- FeatureScatter(Estrus, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
plot1 + plot2

Filter out low-quality cells

  • We filter out cells that have unique feature counts over 6000
  • Because any cell that has more than 6000 genes are likely doublets
  • Note: Seurat tutorial used 2500 instead of 6000
  • We also filter out cells that have more than 5% mitochondrial genes
  • Because those are likely to be nonviable cells
previous_time <- proc.time()[3]
Estrus <- subset(Estrus, subset = nFeature_RNA < 6000 & percent.mt < 5)
proc.time()[3] - previous_time
elapsed 
  0.327 
Estrus
An object of class Seurat 
19418 features across 2585 samples within 1 assay 
Active assay: RNA (19418 features, 5000 variable features)
 1 dimensional reduction calculated: pca
  • After filtering step, the dataset is left with
  • 19418 genes
  • 2585 cells

Normalizing the data

  • Perform log-normalization method
  • Feature counts for each cell are divided by the total counts for that cell and multiplied by the scale.factor
  • scale.factor default value = 10,000
  • This is then natural-log transformed using log1p
previous_time <- proc.time()[3]
Estrus <- NormalizeData(Estrus, normalization.method = "LogNormalize", scale.factor = 10000)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
proc.time()[3] - previous_time
elapsed 
  0.261 

Identification of highly variable features (feature selection)

previous_time <- proc.time()[3]
Estrus <- FindVariableFeatures(Estrus, selection.method = "disp", nfeatures = 5000)
Calculating gene means
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variance to mean ratios
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
proc.time()[3] - previous_time
elapsed 
  0.493 

Plotting highly variable features

# Identify the 10 most highly variable genes
top10 <- head(VariableFeatures(Estrus), 10)
top10
 [1] "Hbb-bs" "Hba-a1" "Hba-a2" "Hbb-bt" "Dcpp3"  "Ccl21a" "Apoe"   "Cd74"   "Ccl5"   "Dcpp1" 
# Plot variable features with and without labels
plot1 <- VariableFeaturePlot(Estrus)
plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)
When using repel, set xnudge and ynudge to 0 for optimal results
plot1 + plot2 
Warning: Removed 1 rows containing missing values (geom_point).
Warning: Removed 1 rows containing missing values (geom_point).

Regress out data and perform scaling

  • Regressing out total counts per cell and percent.mt before scaling.
  • Take out mitochondrial genes before scaling (analyzing) the data
  • Because mito_genes shouldn’t be accounted for cell population analysis.
previous_time <- proc.time()[3]
all.genes <- rownames(Estrus)
Estrus <- ScaleData(Estrus, features = all.genes, vars.to.regress = c("nCount_RNA","percent.mt"), scale.max = 10)
Regressing out nCount_RNA, percent.mt

  |                                                                                                                                  
  |                                                                                                                            |   0%
  |                                                                                                                                  
  |=                                                                                                                           |   0%
  |                                                                                                                                  
  |=                                                                                                                           |   1%
  |                                                                                                                                  
  |==                                                                                                                          |   1%
  |                                                                                                                                  
  |==                                                                                                                          |   2%
  |                                                                                                                                  
  |===                                                                                                                         |   2%
  |                                                                                                                                  
  |===                                                                                                                         |   3%
  |                                                                                                                                  
  |====                                                                                                                        |   3%
  |                                                                                                                                  
  |====                                                                                                                        |   4%
  |                                                                                                                                  
  |=====                                                                                                                       |   4%
  |                                                                                                                                  
  |======                                                                                                                      |   4%
  |                                                                                                                                  
  |======                                                                                                                      |   5%
  |                                                                                                                                  
  |=======                                                                                                                     |   5%
  |                                                                                                                                  
  |=======                                                                                                                     |   6%
  |                                                                                                                                  
  |========                                                                                                                    |   6%
  |                                                                                                                                  
  |========                                                                                                                    |   7%
  |                                                                                                                                  
  |=========                                                                                                                   |   7%
  |                                                                                                                                  
  |=========                                                                                                                   |   8%
  |                                                                                                                                  
  |==========                                                                                                                  |   8%
  |                                                                                                                                  
  |===========                                                                                                                 |   8%
  |                                                                                                                                  
  |===========                                                                                                                 |   9%
  |                                                                                                                                  
  |============                                                                                                                |   9%
  |                                                                                                                                  
  |============                                                                                                                |  10%
  |                                                                                                                                  
  |=============                                                                                                               |  10%
  |                                                                                                                                  
  |=============                                                                                                               |  11%
  |                                                                                                                                  
  |==============                                                                                                              |  11%
  |                                                                                                                                  
  |==============                                                                                                              |  12%
  |                                                                                                                                  
  |===============                                                                                                             |  12%
  |                                                                                                                                  
  |================                                                                                                            |  13%
  |                                                                                                                                  
  |=================                                                                                                           |  13%
  |                                                                                                                                  
  |=================                                                                                                           |  14%
  |                                                                                                                                  
  |==================                                                                                                          |  14%
  |                                                                                                                                  
  |==================                                                                                                          |  15%
  |                                                                                                                                  
  |===================                                                                                                         |  15%
  |                                                                                                                                  
  |===================                                                                                                         |  16%
  |                                                                                                                                  
  |====================                                                                                                        |  16%
  |                                                                                                                                  
  |====================                                                                                                        |  17%
  |                                                                                                                                  
  |=====================                                                                                                       |  17%
  |                                                                                                                                  
  |======================                                                                                                      |  17%
  |                                                                                                                                  
  |======================                                                                                                      |  18%
  |                                                                                                                                  
  |=======================                                                                                                     |  18%
  |                                                                                                                                  
  |=======================                                                                                                     |  19%
  |                                                                                                                                  
  |========================                                                                                                    |  19%
  |                                                                                                                                  
  |========================                                                                                                    |  20%
  |                                                                                                                                  
  |=========================                                                                                                   |  20%
  |                                                                                                                                  
  |=========================                                                                                                   |  21%
  |                                                                                                                                  
  |==========================                                                                                                  |  21%
  |                                                                                                                                  
  |===========================                                                                                                 |  21%
  |                                                                                                                                  
  |===========================                                                                                                 |  22%
  |                                                                                                                                  
  |============================                                                                                                |  22%
  |                                                                                                                                  
  |============================                                                                                                |  23%
  |                                                                                                                                  
  |=============================                                                                                               |  23%
  |                                                                                                                                  
  |=============================                                                                                               |  24%
  |                                                                                                                                  
  |==============================                                                                                              |  24%
  |                                                                                                                                  
  |==============================                                                                                              |  25%
  |                                                                                                                                  
  |===============================                                                                                             |  25%
  |                                                                                                                                  
  |================================                                                                                            |  25%
  |                                                                                                                                  
  |================================                                                                                            |  26%
  |                                                                                                                                  
  |=================================                                                                                           |  26%
  |                                                                                                                                  
  |=================================                                                                                           |  27%
  |                                                                                                                                  
  |==================================                                                                                          |  27%
  |                                                                                                                                  
  |==================================                                                                                          |  28%
  |                                                                                                                                  
  |===================================                                                                                         |  28%
  |                                                                                                                                  
  |===================================                                                                                         |  29%
  |                                                                                                                                  
  |====================================                                                                                        |  29%
  |                                                                                                                                  
  |=====================================                                                                                       |  29%
  |                                                                                                                                  
  |=====================================                                                                                       |  30%
  |                                                                                                                                  
  |======================================                                                                                      |  30%
  |                                                                                                                                  
  |======================================                                                                                      |  31%
  |                                                                                                                                  
  |=======================================                                                                                     |  31%
  |                                                                                                                                  
  |=======================================                                                                                     |  32%
  |                                                                                                                                  
  |========================================                                                                                    |  32%
  |                                                                                                                                  
  |========================================                                                                                    |  33%
  |                                                                                                                                  
  |=========================================                                                                                   |  33%
  |                                                                                                                                  
  |==========================================                                                                                  |  33%
  |                                                                                                                                  
  |==========================================                                                                                  |  34%
  |                                                                                                                                  
  |===========================================                                                                                 |  34%
  |                                                                                                                                  
  |===========================================                                                                                 |  35%
  |                                                                                                                                  
  |============================================                                                                                |  35%
  |                                                                                                                                  
  |============================================                                                                                |  36%
  |                                                                                                                                  
  |=============================================                                                                               |  36%
  |                                                                                                                                  
  |=============================================                                                                               |  37%
  |                                                                                                                                  
  |==============================================                                                                              |  37%
  |                                                                                                                                  
  |===============================================                                                                             |  38%
  |                                                                                                                                  
  |================================================                                                                            |  38%
  |                                                                                                                                  
  |================================================                                                                            |  39%
  |                                                                                                                                  
  |=================================================                                                                           |  39%
  |                                                                                                                                  
  |=================================================                                                                           |  40%
  |                                                                                                                                  
  |==================================================                                                                          |  40%
  |                                                                                                                                  
  |==================================================                                                                          |  41%
  |                                                                                                                                  
  |===================================================                                                                         |  41%
  |                                                                                                                                  
  |===================================================                                                                         |  42%
  |                                                                                                                                  
  |====================================================                                                                        |  42%
  |                                                                                                                                  
  |=====================================================                                                                       |  42%
  |                                                                                                                                  
  |=====================================================                                                                       |  43%
  |                                                                                                                                  
  |======================================================                                                                      |  43%
  |                                                                                                                                  
  |======================================================                                                                      |  44%
  |                                                                                                                                  
  |=======================================================                                                                     |  44%
  |                                                                                                                                  
  |=======================================================                                                                     |  45%
  |                                                                                                                                  
  |========================================================                                                                    |  45%
  |                                                                                                                                  
  |========================================================                                                                    |  46%
  |                                                                                                                                  
  |=========================================================                                                                   |  46%
  |                                                                                                                                  
  |==========================================================                                                                  |  46%
  |                                                                                                                                  
  |==========================================================                                                                  |  47%
  |                                                                                                                                  
  |===========================================================                                                                 |  47%
  |                                                                                                                                  
  |===========================================================                                                                 |  48%
  |                                                                                                                                  
  |============================================================                                                                |  48%
  |                                                                                                                                  
  |============================================================                                                                |  49%
  |                                                                                                                                  
  |=============================================================                                                               |  49%
  |                                                                                                                                  
  |=============================================================                                                               |  50%
  |                                                                                                                                  
  |==============================================================                                                              |  50%
  |                                                                                                                                  
  |===============================================================                                                             |  50%
  |                                                                                                                                  
  |===============================================================                                                             |  51%
  |                                                                                                                                  
  |================================================================                                                            |  51%
  |                                                                                                                                  
  |================================================================                                                            |  52%
  |                                                                                                                                  
  |=================================================================                                                           |  52%
  |                                                                                                                                  
  |=================================================================                                                           |  53%
  |                                                                                                                                  
  |==================================================================                                                          |  53%
  |                                                                                                                                  
  |==================================================================                                                          |  54%
  |                                                                                                                                  
  |===================================================================                                                         |  54%
  |                                                                                                                                  
  |====================================================================                                                        |  54%
  |                                                                                                                                  
  |====================================================================                                                        |  55%
  |                                                                                                                                  
  |=====================================================================                                                       |  55%
  |                                                                                                                                  
  |=====================================================================                                                       |  56%
  |                                                                                                                                  
  |======================================================================                                                      |  56%
  |                                                                                                                                  
  |======================================================================                                                      |  57%
  |                                                                                                                                  
  |=======================================================================                                                     |  57%
  |                                                                                                                                  
  |=======================================================================                                                     |  58%
  |                                                                                                                                  
  |========================================================================                                                    |  58%
  |                                                                                                                                  
  |=========================================================================                                                   |  58%
  |                                                                                                                                  
  |=========================================================================                                                   |  59%
  |                                                                                                                                  
  |==========================================================================                                                  |  59%
  |                                                                                                                                  
  |==========================================================================                                                  |  60%
  |                                                                                                                                  
  |===========================================================================                                                 |  60%
  |                                                                                                                                  
  |===========================================================================                                                 |  61%
  |                                                                                                                                  
  |============================================================================                                                |  61%
  |                                                                                                                                  
  |============================================================================                                                |  62%
  |                                                                                                                                  
  |=============================================================================                                               |  62%
  |                                                                                                                                  
  |==============================================================================                                              |  63%
  |                                                                                                                                  
  |===============================================================================                                             |  63%
  |                                                                                                                                  
  |===============================================================================                                             |  64%
  |                                                                                                                                  
  |================================================================================                                            |  64%
  |                                                                                                                                  
  |================================================================================                                            |  65%
  |                                                                                                                                  
  |=================================================================================                                           |  65%
  |                                                                                                                                  
  |=================================================================================                                           |  66%
  |                                                                                                                                  
  |==================================================================================                                          |  66%
  |                                                                                                                                  
  |==================================================================================                                          |  67%
  |                                                                                                                                  
  |===================================================================================                                         |  67%
  |                                                                                                                                  
  |====================================================================================                                        |  67%
  |                                                                                                                                  
  |====================================================================================                                        |  68%
  |                                                                                                                                  
  |=====================================================================================                                       |  68%
  |                                                                                                                                  
  |=====================================================================================                                       |  69%
  |                                                                                                                                  
  |======================================================================================                                      |  69%
  |                                                                                                                                  
  |======================================================================================                                      |  70%
  |                                                                                                                                  
  |=======================================================================================                                     |  70%
  |                                                                                                                                  
  |=======================================================================================                                     |  71%
  |                                                                                                                                  
  |========================================================================================                                    |  71%
  |                                                                                                                                  
  |=========================================================================================                                   |  71%
  |                                                                                                                                  
  |=========================================================================================                                   |  72%
  |                                                                                                                                  
  |==========================================================================================                                  |  72%
  |                                                                                                                                  
  |==========================================================================================                                  |  73%
  |                                                                                                                                  
  |===========================================================================================                                 |  73%
  |                                                                                                                                  
  |===========================================================================================                                 |  74%
  |                                                                                                                                  
  |============================================================================================                                |  74%
  |                                                                                                                                  
  |============================================================================================                                |  75%
  |                                                                                                                                  
  |=============================================================================================                               |  75%
  |                                                                                                                                  
  |==============================================================================================                              |  75%
  |                                                                                                                                  
  |==============================================================================================                              |  76%
  |                                                                                                                                  
  |===============================================================================================                             |  76%
  |                                                                                                                                  
  |===============================================================================================                             |  77%
  |                                                                                                                                  
  |================================================================================================                            |  77%
  |                                                                                                                                  
  |================================================================================================                            |  78%
  |                                                                                                                                  
  |=================================================================================================                           |  78%
  |                                                                                                                                  
  |=================================================================================================                           |  79%
  |                                                                                                                                  
  |==================================================================================================                          |  79%
  |                                                                                                                                  
  |===================================================================================================                         |  79%
  |                                                                                                                                  
  |===================================================================================================                         |  80%
  |                                                                                                                                  
  |====================================================================================================                        |  80%
  |                                                                                                                                  
  |====================================================================================================                        |  81%
  |                                                                                                                                  
  |=====================================================================================================                       |  81%
  |                                                                                                                                  
  |=====================================================================================================                       |  82%
  |                                                                                                                                  
  |======================================================================================================                      |  82%
  |                                                                                                                                  
  |======================================================================================================                      |  83%
  |                                                                                                                                  
  |=======================================================================================================                     |  83%
  |                                                                                                                                  
  |========================================================================================================                    |  83%
  |                                                                                                                                  
  |========================================================================================================                    |  84%
  |                                                                                                                                  
  |=========================================================================================================                   |  84%
  |                                                                                                                                  
  |=========================================================================================================                   |  85%
  |                                                                                                                                  
  |==========================================================================================================                  |  85%
  |                                                                                                                                  
  |==========================================================================================================                  |  86%
  |                                                                                                                                  
  |===========================================================================================================                 |  86%
  |                                                                                                                                  
  |===========================================================================================================                 |  87%
  |                                                                                                                                  
  |============================================================================================================                |  87%
  |                                                                                                                                  
  |=============================================================================================================               |  88%
  |                                                                                                                                  
  |==============================================================================================================              |  88%
  |                                                                                                                                  
  |==============================================================================================================              |  89%
  |                                                                                                                                  
  |===============================================================================================================             |  89%
  |                                                                                                                                  
  |===============================================================================================================             |  90%
  |                                                                                                                                  
  |================================================================================================================            |  90%
  |                                                                                                                                  
  |================================================================================================================            |  91%
  |                                                                                                                                  
  |=================================================================================================================           |  91%
  |                                                                                                                                  
  |=================================================================================================================           |  92%
  |                                                                                                                                  
  |==================================================================================================================          |  92%
  |                                                                                                                                  
  |===================================================================================================================         |  92%
  |                                                                                                                                  
  |===================================================================================================================         |  93%
  |                                                                                                                                  
  |====================================================================================================================        |  93%
  |                                                                                                                                  
  |====================================================================================================================        |  94%
  |                                                                                                                                  
  |=====================================================================================================================       |  94%
  |                                                                                                                                  
  |=====================================================================================================================       |  95%
  |                                                                                                                                  
  |======================================================================================================================      |  95%
  |                                                                                                                                  
  |======================================================================================================================      |  96%
  |                                                                                                                                  
  |=======================================================================================================================     |  96%
  |                                                                                                                                  
  |========================================================================================================================    |  96%
  |                                                                                                                                  
  |========================================================================================================================    |  97%
  |                                                                                                                                  
  |=========================================================================================================================   |  97%
  |                                                                                                                                  
  |=========================================================================================================================   |  98%
  |                                                                                                                                  
  |==========================================================================================================================  |  98%
  |                                                                                                                                  
  |==========================================================================================================================  |  99%
  |                                                                                                                                  
  |=========================================================================================================================== |  99%
  |                                                                                                                                  
  |=========================================================================================================================== | 100%
  |                                                                                                                                  
  |============================================================================================================================| 100%
Centering and scaling data matrix

  |                                                                                                                                  
  |                                                                                                                            |   0%
  |                                                                                                                                  
  |======                                                                                                                      |   5%
  |                                                                                                                                  
  |============                                                                                                                |  10%
  |                                                                                                                                  
  |===================                                                                                                         |  15%
  |                                                                                                                                  
  |=========================                                                                                                   |  20%
  |                                                                                                                                  
  |===============================                                                                                             |  25%
  |                                                                                                                                  
  |=====================================                                                                                       |  30%
  |                                                                                                                                  
  |===========================================                                                                                 |  35%
  |                                                                                                                                  
  |==================================================                                                                          |  40%
  |                                                                                                                                  
  |========================================================                                                                    |  45%
  |                                                                                                                                  
  |==============================================================                                                              |  50%
  |                                                                                                                                  
  |====================================================================                                                        |  55%
  |                                                                                                                                  
  |==========================================================================                                                  |  60%
  |                                                                                                                                  
  |=================================================================================                                           |  65%
  |                                                                                                                                  
  |=======================================================================================                                     |  70%
  |                                                                                                                                  
  |=============================================================================================                               |  75%
  |                                                                                                                                  
  |===================================================================================================                         |  80%
  |                                                                                                                                  
  |=========================================================================================================                   |  85%
  |                                                                                                                                  
  |================================================================================================================            |  90%
  |                                                                                                                                  
  |======================================================================================================================      |  95%
  |                                                                                                                                  
  |============================================================================================================================| 100%
# Explanations below are from [Seurat](https://satijalab.org/seurat/archive/v3.0/cell_cycle_vignette.html)
# vars.to.regress = RegressOut in Seurat version 1.4 or lower
# However, as the results of this procedure are stored in the scaled data slot (therefore overwriting the output of ScaleData) 
# This functionality is merged into the ScaleData function itself.
proc.time()[3] - previous_time
elapsed 
724.018 

Perform linear dimensional reduction (PCA)

previous_time <- proc.time()[3]
Estrus <- RunPCA(Estrus, features = VariableFeatures(object = Estrus))
PC_ 1 
Positive:  Rps28, Rps19, Rpl18a, Rpl13, Rpl23a, Rplp0, Rpl37, Rpl32, Rps12, Rps18 
       Rps5, Rps24, Rps29, Rpl37a, Rps7, Rps27a, Rps23, Rps11, Rpl35, Rps4x 
       Rpl39, Cd63, Rps20, Rpl27a, Rps15a, Rps16, Rpl10, Rps3a1, Rpl19, Rps9 
Negative:  Gm867, 1700016K19Rik, Ccdc153, 1700007K13Rik, Tmem212, Dynlrb2, Gm19935, 1110017D15Rik, Cfap126, Fam166c 
       Fam183b, Sntn, Vpreb3, Foxj1, Rsph1, Tctex1d4, Dnali1, Lrrc10b, Pifo, 1700024G13Rik 
       Prr29, Dnah12, Hdc, Mlf1, 2410004P03Rik, Tppp3, Efcab10, Timp4, Dnah5, Elof1 
PC_ 2 
Positive:  Lcn2, Cd68, Fxyd3, Arg1, Sftpd, Wfdc2, Sprr2f, Pdzk1ip1, Ltf, Prap1 
       Cxcl17, Serpina1e, Clca1, Padi1, Pigr, Rnf128, Muc1, Tmem45b, Padi2, Muc4 
       Ly6a, Tacstd2, Epcam, Ckmt1, Fxyd4, Elf3, Trpv6, Pglyrp1, Car2, Fut9 
Negative:  Serpinh1, Sparc, Col1a2, Col3a1, Cald1, Col1a1, Col6a1, Bgn, Mgp, Igfbp7 
       Col6a2, Rarres2, Aebp1, Zbtb20, Dcn, Nbl1, Rcn3, Igfbp6, Mdk, Sparcl1 
       Csrp2, Fxyd1, Mfap2, Fxyd6, Col6a3, Lgals1, Col4a1, Igf1, Pbx1, Gsn 
PC_ 3 
Positive:  Ovgp1, Gstm2, Wfdc18, Emb, Kctd14, Plet1, Aldoc, Krt18, Tpd52l1, Clu 
       Agr2, Cldn22, Gstm1, Tmem218, Cbs, Ppp1r1b, Hddc2, Slc1a3, Rcn1, Lrpap1 
       Spint2, Shisa8, Dkk3, Rbp1, Kcne3, Manf, Tmed3, Dcxr, Mgst1, Cystm1 
Negative:  Ctss, Tyrobp, Fcer1g, Csf1r, Laptm5, Apoe, Cd52, H2-Ab1, Cd74, H2-Aa 
       H2-Eb1, Coro1a, C1qc, Aif1, C1qa, C1qb, Lyz2, H2-DMa, Cx3cr1, Pld4 
       Ms4a6c, Cybb, Ly86, Ms4a7, Spi1, Mpeg1, B2m, Trf, Fyb, Fcgr3 
PC_ 4 
Positive:  Clca1, Cxcl17, Muc4, Prap1, Pigr, Serpina1e, Slc40a1, Plac8, Ly6a, Sprr2f 
       Tmem45b, Trpv6, Arg1, Tacstd2, Tmprss4, Fxyd4, Prxl2a, Padi2, Tspan1, Fut9 
       Fcgbp, Ckmt1, Car2, Lrg1, Morrbid, Pdzk1ip1, Wfdc2, Upk3bl, Sftpd, Ncoa7 
Negative:  Ctsc, Tyrobp, Fcer1g, Cd52, H2-Aa, C1qc, Cd74, Csf1r, Aif1, C1qa 
       C1qb, H2-Eb1, Lyz2, Coro1a, H2-Ab1, Cx3cr1, Pld4, Ly86, Ms4a6c, Cybb 
       Ms4a7, Spi1, Cyth4, Fcgr3, H2-DMa, Lcp1, Mpeg1, Laptm5, Lst1, Adgre1 
PC_ 5 
Positive:  Gsn, Pdgfra, Htra3, Mfap4, Mfap2, Dpt, Serpinf1, Sparcl1, Ntrk2, Col6a3 
       Col15a1, Penk, Gpm6b, Lama2, Lpl, Matn2, Ramp3, Mdk, Spon1, Ramp1 
       Rxfp1, Col5a2, Islr, Osr2, Srpx, Itih5, Zeb2, Htra1, Bgn, Enpp2 
Negative:  Cavin2, Gpm6a, Kdr, Cav1, Egfl7, Podxl, Ecscr, Adgrf5, Cldn5, Pecam1 
       Esam, Cdh5, Prss23, Arhgap29, Upk3b, Mmrn1, Tie1, Flt4, Lrrn4, Upk1b 
       Nkain4, Emcn, Stmn2, Ccl21a, C2, Ltbp4, Ushbp1, Mmrn2, Myrf, Lmcd1 
proc.time()[3] - previous_time
elapsed 
  4.545 

Examine and visualize PCA results a few different ways

print(Estrus[["pca"]], dims = 1:5, nfeatures = 5)
PC_ 1 
Positive:  Rps28, Rps19, Rpl18a, Rpl13, Rpl23a 
Negative:  Gm867, 1700016K19Rik, Ccdc153, 1700007K13Rik, Tmem212 
PC_ 2 
Positive:  Lcn2, Cd68, Fxyd3, Arg1, Sftpd 
Negative:  Serpinh1, Sparc, Col1a2, Col3a1, Cald1 
PC_ 3 
Positive:  Ovgp1, Gstm2, Wfdc18, Emb, Kctd14 
Negative:  Ctss, Tyrobp, Fcer1g, Csf1r, Laptm5 
PC_ 4 
Positive:  Clca1, Cxcl17, Muc4, Prap1, Pigr 
Negative:  Ctsc, Tyrobp, Fcer1g, Cd52, H2-Aa 
PC_ 5 
Positive:  Gsn, Pdgfra, Htra3, Mfap4, Mfap2 
Negative:  Cavin2, Gpm6a, Kdr, Cav1, Egfl7 
VizDimLoadings(Estrus, dims = 1:2, reduction = "pca")

DimPlot(Estrus, reduction = "pca") + ggtitle(label = 'Including immune cells') 
ggsave(filename = "PCA_Including_immune_cells.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 7.29 x 4.5 in image

FeaturePlot(Estrus, reduction = "pca", features = c('Ovgp1', 
                                                    'Foxj1', 'Igf1', 'Pdxk', 
                                                    'Fxyd4', 'Bsg', 
                                                    'Serpina1e', 'Krt19'))

ggsave(filename = "PCA_Including_immune_cells1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(Estrus, reduction = "pca", features = c('Dcn', 'Pax8',
                                                    'Ephx2', 
                                                    'Pecam1', 'Pdgfra', 'Myh11', 'Atp2b4', 
                                                    'Cd52'))

ggsave(filename = "PCA_Including_immune_cells2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image

Determine the ‘dimensionality’ of the data

  • Seurat tutorial uses JackStraw() and and ScoreJackStraw to determine dimensionality
  • the syntax is:
    • Estrus <- JackStraw(Estrus, num.replicate = 100)
    • Estrus <- ScoreJackStraw(Estrus, dims = 1:20)
  • However, it takes very long.
  • An elbow plot often corresponds well enough with the significant dims and is much faster to run than Jackstraw
  • According to the graph below, choose the first 22 principle components to use
ElbowPlot(Estrus, ndims = 40)

Find neighbors

  • Dims = dimensions = determined as 22 from the above step
previous_time <- proc.time()[3]
Estrus_new <- FindNeighbors(Estrus, dims = 1:22, k.param = 10)
Computing nearest neighbor graph
Computing SNN
proc.time()[3] - previous_time
elapsed 
  0.324 

Find cell clusters using Leiden’s method

# Algorithm = 4 specifies Leiden's method
previous_time <- proc.time()[3]
Estrus_new <- FindClusters(Estrus_new, resolution = 0.14, algorithm = 4)
proc.time()[3] - previous_time
elapsed 
  0.754 

Constructing UMAP plot

previous_time <- proc.time()[3]
Estrus_new <- RunUMAP(Estrus_new, dim = 1:22) 
16:23:56 UMAP embedding parameters a = 0.9922 b = 1.112
16:23:56 Read 2585 rows and found 22 numeric columns
16:23:56 Using Annoy for neighbor search, n_neighbors = 30
16:23:56 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:23:57 Writing NN index file to temp file /tmp/RtmprVQ6Uz/file19849734bf80
16:23:57 Searching Annoy index using 1 thread, search_k = 3000
16:23:57 Annoy recall = 100%
16:23:57 Commencing smooth kNN distance calibration using 1 thread
16:23:58 Initializing from normalized Laplacian + noise
16:23:58 Commencing optimization for 500 epochs, with 102266 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:24:00 Optimization finished
proc.time()[3] - previous_time
elapsed 
  3.653 

Visualization

DimPlot(Estrus_new, reduction = "umap") + ggtitle(label = 'Including immune cells')
ggsave(filename = "UMAP_Including_immune_cells.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 7.29 x 4.5 in image

FeaturePlot(Estrus_new, reduction = "umap", features = c('Ovgp1', 'Foxj1', 'Dcn', 'Serpina1e', 'Sprr2f',
                                                         'Fxyd4', 'Ly6a', 'Epcam', 'Krt19', 'Vim', 'Pdgfra'))

ggsave(filename = "UMAP_Including_immune_cells1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(Estrus_new, reduction = "umap", features = c('Myh11', 
                                        'Dkk2', 'Slitrk6', 'Dio2', 'Smoc2', 'Tes', 'Dab1', 'Camk1d', 'Pecam1', 'Cd52','Mki67'))

ggsave(filename = "UMAP_Including_immune_cells2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image

Removing immune cells

sub_Estrus = subset(x = Estrus_new, ident = c(1,2,3,4,5,6,7,9,10,12))
DimPlot(sub_Estrus, reduction = "umap") + ggtitle(label = 'Immune cells removed')

ggsave(filename = "UMAP_Immune_cells_removed.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "umap", features = c('Ovgp1', 'Foxj1', 'Fxyd4', 'Cxcl17', 'Myh11', 'Cd52', 'Twist2', 'Pecam1'))

ggsave(filename = "UMAP_Immune_cells_removed1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "umap", features = c('Pdgfra', 'Ephx2', 'Dcn', 'Krt19', 'Epcam', 'Vim','Mki67'))

ggsave(filename = "UMAP_Immune_cells_removed2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
sub_Estrus
An object of class Seurat 
19418 features across 2318 samples within 1 assay 
Active assay: RNA (19418 features, 5000 variable features)
 2 dimensional reductions calculated: pca, umap
  • After removing immune cells, the dataset is left with:
    • 19418 genes
    • 2318 cells

Re-run analysis after excluding immune cells

previous_time <- proc.time()[3]
sub_Estrus <- RunPCA(sub_Estrus, features = VariableFeatures(object = sub_Estrus))
PC_ 1 
Positive:  Gm867, Ccdc153, 1700016K19Rik, 1700007K13Rik, Tmem212, Fam166c, Dynlrb2, Gm19935, Sntn, 1110017D15Rik 
       Fam183b, Cfap126, Foxj1, Vpreb3, Dnali1, Rsph1, Tctex1d4, Lrrc10b, 1700024G13Rik, Dnah12 
       Pifo, Prr29, 2410004P03Rik, Mlf1, Hdc, Tppp3, Dnah5, Efcab10, Timp4, Dnaja4 
Negative:  Rps28, Rps19, Rplp0, Rpl18a, Rpl13, Rpl23a, Rpl37, Rpl32, Rps18, Rps5 
       Rps7, Rps12, Rpl37a, Rps24, Rps27a, Cd63, Rpl39, Rps23, Rps4x, Rps29 
       Rps20, Rpl35, Rpl27a, Rps15a, Rps11, Rps3a1, Rpl10a, Rpl10, Rps2, Rps16 
PC_ 2 
Positive:  Cald1, Col1a2, Serpinh1, Col3a1, Col6a1, Col1a1, Aebp1, Bgn, Rarres2, Mgp 
       Sparc, Col6a2, Dcn, Igfbp7, Igfbp6, Rcn3, Rnase4, Zbtb20, Mdk, Lgals1 
       Nbl1, Csrp2, Fxyd1, Igf1, Sparcl1, Lrp1, Mfap2, Col6a3, Timp2, Ccdc80 
Negative:  Lcn2, Fxyd3, Ltf, Epcam, Sftpd, Wfdc2, Plet1, Arg1, Pdzk1ip1, Rnf128 
       Sprr2f, Muc1, Padi1, Prap1, Cxcl17, Cldn7, Elf3, Serpina1e, Clca1, Ier3 
       Pigr, Ly6a, Ckmt1, Tmem45b, Car2, Muc4, Bcat1, Tspan8, Pglyrp1, Tacstd2 
PC_ 3 
Positive:  Ovgp1, Kctd14, Gstm2, Emb, Clu, Tmem218, Gstm1, Cbs, Wfdc18, Ppp1r1b 
       Slc1a3, Aldoc, Agr2, Cldn22, Dkk3, Rcn1, Lrpap1, Shisa8, Fn1, Tpd52l1 
       Sdf2l1, Smim14, Selenom, Manf, Gdpd2, Bex4, Enho, Tmed3, Kcne3, Slco2a1 
Negative:  Plac8, Clca1, Muc4, Pigr, Cxcl17, Ly6a, Slc40a1, Prap1, Trpv6, Tmem45b 
       Serpina1e, Sprr2f, Tspan1, Tmprss4, Tacstd2, Padi2, Prxl2a, Fcgbp, Cfh, Arg1 
       Fxyd4, Fut9, Lrg1, Rasa4, Fbln1, Morrbid, Slc39a8, Ckmt1, Ncoa7, Upk3bl 
PC_ 4 
Positive:  Upk3b, Nkain4, Lrrn4, Upk1b, C2, Myrf, Tmem151a, Lgals7, Fgf1, Gpm6a 
       Lgals2, Smoc2, Serpinb6b, Slpi, Dpp4, Cldn15, Rspo1, Msln, Plxna4, Cybrd1 
       Aldh1a2, Nrgn, Fmod, Rpp25, Ogn, Hpgd, Prph, Adam33, Ptgis, Hacd4 
Negative:  Sparcl1, Pdgfra, Gsn, Mfap4, Htra3, Dpt, Mfap2, Col15a1, Itih5, Gpm6b 
       Ramp3, Lama2, Ntrk2, Penk, G0s2, Serpinf1, Spon1, Col6a3, Rxfp1, Plpp3 
       Lpl, Enpp2, Lhfp, Matn2, Ramp1, Nrp1, Atp1a2, Srpx, Emilin1, Pdgfrl 
PC_ 5 
Positive:  Pdgfra, Dcn, Dpt, Col15a1, Ramp3, Ntrk2, Lpl, Htra3, Htra1, Plxdc2 
       Aebp1, Cygb, Col5a3, Meg3, Lum, P2ry1, Fbln1, Dkk2, Pcolce, Dio2 
       Lrp1, Mfap5, Ctsk, Spon1, Col5a2, Col3a1, Ctsl, Matn2, Itih5, Rnase4 
Negative:  Myh11, Lmod1, Cnn1, Fbxl22, Acta2, Mustn1, Tagln, Actg2, Mcam, Sh3bgr 
       Des, Nexn, Myl9, Asb2, Ppp1r14a, Mylk, Tpm2, Synpo2, Myom1, Carmn 
       Slc22a3, Aoc3, Pdlim3, Slc2a4, Postn, Npnt, Tpm1, Dmpk, Smtn, Rbpms2 
proc.time()[3] - previous_time
elapsed 
  4.742 
DimPlot(sub_Estrus, reduction = "pca") + ggtitle(label = 'Immune cells removed')

ggsave(filename = "PCA_Immune_cells_removed.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "pca", features = c('Esr1', 'Ovgp1', 'Foxj1', 'Fxyd4', 'Ephx2', 'Dcn'))

ggsave(filename = "PCA_Immune_cells_removed1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "pca", features = c('Fos', 'Kcne3', 'Serpina1e', 'Crabp2', 'Pgr', 'Vim'))

ggsave(filename = "PCA_Immune_cells_removed2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
previous_time <- proc.time()[3]
sub_Estrus_new <- FindNeighbors(sub_Estrus, dims = 1:22)
Computing nearest neighbor graph
Computing SNN
proc.time()[3] - previous_time
elapsed 
  0.375 
previous_time <- proc.time()[3]
sub_Estrus_new <- FindClusters(sub_Estrus_new, resolution = 0.04, algorithm = 4)
proc.time()[3] - previous_time
elapsed 
  0.711 
previous_time <- proc.time()[3]
sub_Estrus_new <- RunUMAP(sub_Estrus_new, dim = 1:22)
16:42:15 UMAP embedding parameters a = 0.9922 b = 1.112
16:42:15 Read 2318 rows and found 22 numeric columns
16:42:15 Using Annoy for neighbor search, n_neighbors = 30
16:42:15 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:42:15 Writing NN index file to temp file /tmp/RtmprVQ6Uz/file1984921d941dd
16:42:15 Searching Annoy index using 1 thread, search_k = 3000
16:42:16 Annoy recall = 100%
16:42:16 Commencing smooth kNN distance calibration using 1 thread
16:42:16 Initializing from normalized Laplacian + noise
16:42:16 Commencing optimization for 500 epochs, with 91758 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:42:18 Optimization finished
proc.time()[3] - previous_time
elapsed 
  3.395 
DimPlot(sub_Estrus_new, reduction = "umap") + ggtitle(label = 'Rescale UMAP after removing Immune cells')

ggsave(filename = "UMAP_Rescale.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 10 x 6.18 in image
FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Ovgp1', 'Foxj1', 'Crabp2', 'Myh11', 'Wt1', 'S100g', 'Sprr2f',
                  'Fxyd4'))

ggsave(filename = "UMAP_Rescale1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Dcn', 'Pax8', 'Pax2', 'Twist2', 'Igf1', 'Serpina1e', 'Pdgfra', 'Krt19', 'Mki67'))

ggsave(filename = "UMAP_Rescale2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image

Marker genes

marker_genes = c('Epcam', 'Krt15','Krt8','Krt19','Vim','Pdgfra','Twist2', 'Sprr2f', 'Fxyd4', 'Igfbp6',
                 'Acta2', 'Myh11','Foxj1','Ovgp1','Wt1','Serpina1e','S100g','Pecam1')

UMAP for marker genes

FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Epcam', 'Krt15','Krt8','Krt19','Vim','Pdgfra','Twist2', 'Sprr2f', 'Fxyd4'))

ggsave(filename = "UMAP_for_Marker_genes1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Igfbp6',
                                                             'Acta2', 'Myh11','Foxj1','Ovgp1','Wt1','Serpina1e','S100g','Pecam1'))

ggsave(filename = "UMAP_for_Marker_genes2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image

Rename clusters

Cluster.names <- c('1 Ciliated_InfAmp',
                   '2 Secretory_InfAmp',
                   '3 Epithelial_subset',
                   '4 Fibroblast Pdgfra+',
                   '5 Secretory_IsthUTJ',
                   '6 Fibroblast Pdgfra-',
                   '7 Muscle')
names(Cluster.names) <- levels(sub_Estrus_new)
sub_Estrus_new <- RenameIdents(sub_Estrus_new, Cluster.names)
DimPlot(sub_Estrus_new, reduction = "umap", pt.size = 0.5) + scale_color_manual(labels = Cluster.names,values=c('green',                                                                                        'red','blue','orange','grey','yellow','pink','purple'))
ggsave(filename = "UMAP_Clusters_names.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 7.29 x 4.5 in image

DotPlot(sub_Estrus_new, features = marker_genes, group.by = sub_Estrus_new@meta.data$ident) +  
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
  scale_y_discrete(labels = Cluster.names)

ggsave(filename = "DotPlot_for_Marker_genes.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 12 x 7.41 in image

Number of cells in each clusters

table(sub_Estrus_new@active.ident, sub_Estrus_new@meta.data$orig.ident)
                      
                       Estrus
  1 Ciliated_InfAmp       538
  2 Secretory_InfAmp      499
  3 Epithelial_subset     351
  4 Fibroblast Pdgfra+    347
  5 Secretory_IsthUTJ     304
  6 Fibroblast Pdgfra-    152
  7 Muscle                127

Extract top genes for each cluster

  • Default method of finding highly expressed genes for FindAllMarkers is Wilcoxon Rank Sum test
previous_time <- proc.time()[3]
sub_Estrus_new_markers <- FindAllMarkers(sub_Estrus_new, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
Calculating cluster 1 Ciliated_InfAmp

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~13s          
  |++                                                | 2 % ~13s          
  |++                                                | 3 % ~13s          
  |+++                                               | 4 % ~13s          
  |+++                                               | 5 % ~12s          
  |++++                                              | 6 % ~12s          
  |++++                                              | 7 % ~12s          
  |+++++                                             | 8 % ~12s          
  |+++++                                             | 9 % ~12s          
  |++++++                                            | 10% ~12s          
  |++++++                                            | 11% ~12s          
  |+++++++                                           | 12% ~11s          
  |+++++++                                           | 13% ~11s          
  |++++++++                                          | 14% ~11s          
  |++++++++                                          | 15% ~11s          
  |+++++++++                                         | 16% ~11s          
  |+++++++++                                         | 18% ~11s          
  |++++++++++                                        | 19% ~11s          
  |++++++++++                                        | 20% ~11s          
  |+++++++++++                                       | 21% ~10s          
  |+++++++++++                                       | 22% ~10s          
  |++++++++++++                                      | 23% ~10s          
  |++++++++++++                                      | 24% ~10s          
  |+++++++++++++                                     | 25% ~10s          
  |+++++++++++++                                     | 26% ~10s          
  |++++++++++++++                                    | 27% ~10s          
  |++++++++++++++                                    | 28% ~10s          
  |+++++++++++++++                                   | 29% ~09s          
  |+++++++++++++++                                   | 30% ~09s          
  |++++++++++++++++                                  | 31% ~09s          
  |++++++++++++++++                                  | 32% ~09s          
  |+++++++++++++++++                                 | 33% ~09s          
  |++++++++++++++++++                                | 34% ~09s          
  |++++++++++++++++++                                | 35% ~09s          
  |+++++++++++++++++++                               | 36% ~08s          
  |+++++++++++++++++++                               | 37% ~08s          
  |++++++++++++++++++++                              | 38% ~08s          
  |++++++++++++++++++++                              | 39% ~08s          
  |+++++++++++++++++++++                             | 40% ~08s          
  |+++++++++++++++++++++                             | 41% ~08s          
  |++++++++++++++++++++++                            | 42% ~08s          
  |++++++++++++++++++++++                            | 43% ~07s          
  |+++++++++++++++++++++++                           | 44% ~07s          
  |+++++++++++++++++++++++                           | 45% ~07s          
  |++++++++++++++++++++++++                          | 46% ~07s          
  |++++++++++++++++++++++++                          | 47% ~07s          
  |+++++++++++++++++++++++++                         | 48% ~07s          
  |+++++++++++++++++++++++++                         | 49% ~07s          
  |++++++++++++++++++++++++++                        | 51% ~07s          
  |++++++++++++++++++++++++++                        | 52% ~06s          
  |+++++++++++++++++++++++++++                       | 53% ~06s          
  |+++++++++++++++++++++++++++                       | 54% ~06s          
  |++++++++++++++++++++++++++++                      | 55% ~06s          
  |++++++++++++++++++++++++++++                      | 56% ~06s          
  |+++++++++++++++++++++++++++++                     | 57% ~06s          
  |+++++++++++++++++++++++++++++                     | 58% ~06s          
  |++++++++++++++++++++++++++++++                    | 59% ~05s          
  |++++++++++++++++++++++++++++++                    | 60% ~05s          
  |+++++++++++++++++++++++++++++++                   | 61% ~05s          
  |+++++++++++++++++++++++++++++++                   | 62% ~05s          
  |++++++++++++++++++++++++++++++++                  | 63% ~05s          
  |++++++++++++++++++++++++++++++++                  | 64% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~05s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~04s          
  |++++++++++++++++++++++++++++++++++                | 67% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~04s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~04s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~04s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~04s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~03s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~03s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=13s  
Calculating cluster 2 Secretory_InfAmp

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 3 Epithelial_subset

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~06s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~02s          
  |+++++++++++++                                     | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |++++++++++++++                                    | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 4 Fibroblast Pdgfra+

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |+++++++++++                                       | 20% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |+++++++++++++                                     | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |++++++++++++++                                    | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 5 Secretory_IsthUTJ

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 8 % ~04s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~04s          
  |+++++++                                           | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |++++++++                                          | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |+++++++++                                         | 18% ~04s          
  |++++++++++                                        | 19% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |+++++++++++                                       | 22% ~04s          
  |++++++++++++                                      | 23% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |+++++++++++++++++++                               | 36% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |++++++++++++++++++++                              | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |+++++++++++++++++++++                             | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 6 Fibroblast Pdgfra-

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 8 % ~04s          
  |+++++                                             | 9 % ~04s          
  |+++++                                             | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |++++++                                            | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |+++++++                                           | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 19% ~04s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |++++++++++++++++++++                              | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |+++++++++++++++++++++                             | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 7 Muscle

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~02s          
  |++++++++                                          | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |+++++++++                                         | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
sub_Estrus_new_markers %>%
    group_by(cluster) %>%
    slice_max(n = 20, order_by = avg_log2FC)
proc.time()[3] - previous_time
elapsed 
  38.09 

Heat map for top 10 genes in each cluster

sub_Estrus_new_markers %>%
    group_by(cluster) %>%
    top_n(n = 10, wt = avg_log2FC) -> top10
DoHeatmap(sub_Estrus_new, features = top10$gene) + NoLegend()

ggsave(filename = "HeatMap_Top10_genes.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Figures/")
Saving 10 x 6.18 in image
saveRDS(sub_Estrus_new, file = "/home/nguyen/FinalWork/R/ManuallyRemoveGenes/Estrus_subset_analyzed.rds")
LS0tCnRpdGxlOiAic2NSTkEtc2VxIGFuYWx5c2lzIHVzaW5nIFNldXJhdCBwYWNrYWdlIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKYXV0aG9yOiBMb25nIE5ndXllbgotLS0KIyBEZXNjcmlwdGlvbjoKKiBUaGUgcHVycG9zZSBvZiB0aGlzIG5vdGVib29rIGlzIHRvIGFuYWx5emUgc2NSTkEtc2VxIGRhdGEgb2YgbW91c2UgRXN0cnVzCiogVGhlIG1ldGhvZCB1c2VkIGlzIHJlYWRpbmcgZGlyZWN0bHkgZnJvbSBtdHggZmlsZXMgKENlbGxSYW5nZXIgY291bnQgb3V0cHV0cykKKiBUaGUgYWxnb3JpdGhtcyB1c2VkIGNvbWUgZnJvbSBTZXVyYXQgcGFja2FnZQoqIFR3byBtaXRvY2hvbmRpcmFsIGdlbmVzOiBtdC1OZDYgYW5kIG10LUN5dGIgd2lsbCBiZSBtYW51YWxseSBkZWxldGVkCiogQmVjYXVzZSByZWFkX2xvb20gbWV0aG9kIGluIFNjYW5weSBkb2VzIG5vdCBjb250YWluIHRob3NlIGdlbmVzIGFmdGVyIGZpbHRlcmluZyB3YXMgZG9uZQoqIFRoZSByZXN1bHRzIHdpbGwgY29tcGFyZWQgdG86CiAgKyBTYW1lIGRhdGFzZXQgYW5hbHl6ZWQgdXNpbmcgU2NhbnB5IC0gTWFudWFsbHlSZW1vdmVHZW5lcwogICsgU2FtZSBkYXRhc2V0IGFuYWx5emVkIHVzaW5nIFNjYW5weSAtIHJlYWRsb29tCiAgCiMgV29ya2Zsb3cgYmVnaW4KVGhpcyB0dXRvcmlhbCBjb21lcyBmcm9tIFtTZXVyYXRdKGh0dHBzOi8vc2F0aWphbGFiLm9yZy9zZXVyYXQvYXJ0aWNsZXMvcGJtYzNrX3R1dG9yaWFsLmh0bWwpCgojIyBMb2FkIHJlcXVpcmVkIHBhY2thZ2VzCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KFNldXJhdCkKbGlicmFyeShsZWlkZW4pCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShwYXRjaHdvcmspCmBgYAoKCiMjIExvYWQgZGF0YQpJbnB1dCBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIENlbGxSYW5nZXIgY291bnQgb3V0cHV0cwpgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXMuZGF0YSA8LVJlYWQxMFgoZGF0YS5kaXIgPSIvaG9tZS9uZ3V5ZW4vRXN0cnVzX2NlbGxyYW5nZXJfY291bnQvRXN0cnVzX1Jhdy8iKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCiogVmlldyhFc3RydXMuZGF0YSkgLSBydW4gdGhpcyBjb21tYW5kIHRvIGludmVzdGlnYXRlIHRoZSBvdXRwdXQKKiBDdXJyZW50IGRhdGFzZXQ6CiAgKyAzMTI1MyBnZW5lcwogICsgNjU5OSBjZWxscwoKIyMgSW5pdGlhbGl6ZSB0aGUgU2V1cmF0IG9iamVjdAoqIEluaXRpYWxpemUgdGhlIFNldXJhdCBvYmplY3Qgd2l0aCB0aGUgcmF3IChub24tbm9ybWFsaXplZCBkYXRhKS4KKiBGaWx0ZXIgb3V0IGdlbmVzIHRoYXQgYXJlIGRldGVjdGVkIGluIGxlc3MgdGhhbiAzIGNlbGxzIAoqIEZpbHRlciBvdXQgY2VsbHMgdGhhdCBoYXZlIGxlc3MgdGhhbiAyMDAgZ2VuZXMgZXhwcmVzc2VkCmBgYHtyfQpwcmV2aW91c190aW1lIDwtIHByb2MudGltZSgpWzNdCkVzdHJ1cyA8LSBDcmVhdGVTZXVyYXRPYmplY3QoY291bnRzID0gRXN0cnVzLmRhdGEsIHByb2plY3QgPSAiRXN0cnVzIiwgbWluLmNlbGxzID0gMywgbWluLmZlYXR1cmVzID0gMjAwKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKRXN0cnVzCmBgYAoqIE91dHB1dDoKICArIDE5NDIwIGdlbmVzIAogICsgNjQ4MSBjZWxscwoKIyMgTWl0b2Nob25kaXJhbCBnZW5lcyBvdmVydmlldwpgYGB7cn0KIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGdlbmVzIHRoYXQgc3RhcnQgd2l0aCBtdAptaXRvX2dlbmVzIDwtIGdyZXAoIl5tdC0iLCByb3duYW1lcyhFc3RydXMpICwgaWdub3JlLmNhc2U9VCwgdmFsdWU9VCkKcHJpbnQobWl0b19nZW5lcykKYGBgCgojIyBtdC1OZDYgYW5kIG10LUN5dGIgd2lsbCBiZSBtYW51YWxseSBkZWxldGVkCmBgYHtyfQpjb3VudHMgPC0gR2V0QXNzYXlEYXRhKEVzdHJ1cywgYXNzYXkgPSAiUk5BIikKY291bnRzIDwtIGNvdW50c1stKHdoaWNoKHJvd25hbWVzKGNvdW50cykgJWluJSBjKCJtdC1OZDYiLCAibXQtQ3l0YiIpKSksXQpFc3RydXMgPC0gc3Vic2V0KEVzdHJ1cywgZmVhdHVyZXMgPSByb3duYW1lcyhjb3VudHMpKQpgYGAKCmBgYHtyfQojIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZ2VuZXMgdGhhdCBzdGFydCB3aXRoIG10Cm1pdG9fZ2VuZXMgPC0gZ3JlcCgiXm10LSIsIHJvd25hbWVzKEVzdHJ1cykgLCBpZ25vcmUuY2FzZT1ULCB2YWx1ZT1UKQpwcmludChtaXRvX2dlbmVzKQpgYGAKKiAibXQtTmQ2IiwgIm10LUN5dGIiIHdlcmUgZGVsZXRlZAoKIyMgQ2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIG9mIG1pdG9jaG9uZHJpYWwgZ2VuZXMKKiBBZGQgInBlcmNlbnQubXQiIGNvbHVtbiB0byBvYmplY3QgbWV0YWRhdGEKKiBQZXJjZW50YWdlIG9mIG1pdG9jaG9uZHJpYWwgZ2VuZXMgaXMgc3RvcmVkIGluICJwZXJjZW50Lm10IgoqICJebXQtIiBtZWFucyBzdHJpbmdzIHN0YXJ0IHdpdGggbXQgKGxvd2VyY2FzZSBtdCBmb3IgbWljZSwgdXBwZXJjYXNlIE1UIGZvciBodW1hbikKYGBge3J9CkVzdHJ1c1tbInBlcmNlbnQubXQiXV0gPC0gUGVyY2VudGFnZUZlYXR1cmVTZXQoRXN0cnVzLCBwYXR0ZXJuID0gIl5tdC0iKQpgYGAKCmBgYHtyfQojIFRoaXMgaXMgdGhlIGRhdGEgaW4gInBlcmNlbnQubXQiIGNvbHVtbgpwZXJjZW50X21pdG8gPC0gRmV0Y2hEYXRhKG9iamVjdCA9IEVzdHJ1cywgdmFycyA9ICJwZXJjZW50Lm10IikgI2hvdyB0byBmZXRjaCBkYXRhCmhlYWQocGVyY2VudF9taXRvKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTB9CiMgVmlzdWFsaXplIFFDIG1ldHJpY3MgYXMgYSB2aW9saW4gcGxvdApWbG5QbG90KEVzdHJ1cywgZmVhdHVyZXMgPSBjKCJuRmVhdHVyZV9STkEiLCAibkNvdW50X1JOQSIsICJwZXJjZW50Lm10IiksIG5jb2wgPSAzKQpgYGAKYGBge3J9CiMgRmVhdHVyZVNjYXR0ZXIgaXMgdHlwaWNhbGx5IHVzZWQgdG8gdmlzdWFsaXplIGZlYXR1cmUtZmVhdHVyZSByZWxhdGlvbnNoaXBzLCBidXQgY2FuIGJlIHVzZWQKIyBmb3IgYW55dGhpbmcgY2FsY3VsYXRlZCBieSB0aGUgb2JqZWN0LCBpLmUuIGNvbHVtbnMgaW4gb2JqZWN0IG1ldGFkYXRhLCBQQyBzY29yZXMgZXRjLgpwbG90MSA8LSBGZWF0dXJlU2NhdHRlcihFc3RydXMsIGZlYXR1cmUxID0gIm5Db3VudF9STkEiLCBmZWF0dXJlMiA9ICJwZXJjZW50Lm10IikKcGxvdDIgPC0gRmVhdHVyZVNjYXR0ZXIoRXN0cnVzLCBmZWF0dXJlMSA9ICJuQ291bnRfUk5BIiwgZmVhdHVyZTIgPSAibkZlYXR1cmVfUk5BIikKcGxvdDEgKyBwbG90MgpgYGAKCiMjIEZpbHRlciBvdXQgbG93LXF1YWxpdHkgY2VsbHMKKiBXZSBmaWx0ZXIgb3V0IGNlbGxzIHRoYXQgaGF2ZSB1bmlxdWUgZmVhdHVyZSBjb3VudHMgb3ZlciA2MDAwCiogQmVjYXVzZSBhbnkgY2VsbCB0aGF0IGhhcyBtb3JlIHRoYW4gNjAwMCBnZW5lcyBhcmUgbGlrZWx5IGRvdWJsZXRzCiogTm90ZTogU2V1cmF0IHR1dG9yaWFsIHVzZWQgMjUwMCBpbnN0ZWFkIG9mIDYwMDAKKiBXZSBhbHNvIGZpbHRlciBvdXQgY2VsbHMgdGhhdCBoYXZlIG1vcmUgdGhhbiA1JSBtaXRvY2hvbmRyaWFsIGdlbmVzCiogQmVjYXVzZSB0aG9zZSBhcmUgbGlrZWx5IHRvIGJlIG5vbnZpYWJsZSBjZWxscwpgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXMgPC0gc3Vic2V0KEVzdHJ1cywgc3Vic2V0ID0gbkZlYXR1cmVfUk5BIDwgNjAwMCAmIHBlcmNlbnQubXQgPCA1KQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCmBgYHtyfQpFc3RydXMKYGBgCiogQWZ0ZXIgZmlsdGVyaW5nIHN0ZXAsIHRoZSBkYXRhc2V0IGlzIGxlZnQgd2l0aAogKyAxOTQxOCBnZW5lcwogKyAyNTg1IGNlbGxzCgojIyBOb3JtYWxpemluZyB0aGUgZGF0YQoqIFBlcmZvcm0gbG9nLW5vcm1hbGl6YXRpb24gbWV0aG9kCiogRmVhdHVyZSBjb3VudHMgZm9yIGVhY2ggY2VsbCBhcmUgZGl2aWRlZCBieSB0aGUgdG90YWwgY291bnRzIGZvciB0aGF0IGNlbGwgYW5kIG11bHRpcGxpZWQgYnkgdGhlIHNjYWxlLmZhY3RvcgoqIHNjYWxlLmZhY3RvciBkZWZhdWx0IHZhbHVlID0gMTAsMDAwCiogVGhpcyBpcyB0aGVuIG5hdHVyYWwtbG9nIHRyYW5zZm9ybWVkIHVzaW5nIGxvZzFwCmBgYHtyfQpwcmV2aW91c190aW1lIDwtIHByb2MudGltZSgpWzNdCkVzdHJ1cyA8LSBOb3JtYWxpemVEYXRhKEVzdHJ1cywgbm9ybWFsaXphdGlvbi5tZXRob2QgPSAiTG9nTm9ybWFsaXplIiwgc2NhbGUuZmFjdG9yID0gMTAwMDApCnByb2MudGltZSgpWzNdIC0gcHJldmlvdXNfdGltZQpgYGAKIyMgSWRlbnRpZmljYXRpb24gb2YgaGlnaGx5IHZhcmlhYmxlIGZlYXR1cmVzIChmZWF0dXJlIHNlbGVjdGlvbikKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10KRXN0cnVzIDwtIEZpbmRWYXJpYWJsZUZlYXR1cmVzKEVzdHJ1cywgc2VsZWN0aW9uLm1ldGhvZCA9ICJkaXNwIiwgbmZlYXR1cmVzID0gNTAwMCkKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAojIyBQbG90dGluZyBoaWdobHkgdmFyaWFibGUgZmVhdHVyZXMKYGBge3J9CiMgSWRlbnRpZnkgdGhlIDEwIG1vc3QgaGlnaGx5IHZhcmlhYmxlIGdlbmVzCnRvcDEwIDwtIGhlYWQoVmFyaWFibGVGZWF0dXJlcyhFc3RydXMpLCAxMCkKdG9wMTAKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTR9CiMgUGxvdCB2YXJpYWJsZSBmZWF0dXJlcyB3aXRoIGFuZCB3aXRob3V0IGxhYmVscwpwbG90MSA8LSBWYXJpYWJsZUZlYXR1cmVQbG90KEVzdHJ1cykKcGxvdDIgPC0gTGFiZWxQb2ludHMocGxvdCA9IHBsb3QxLCBwb2ludHMgPSB0b3AxMCwgcmVwZWwgPSBUUlVFKQpwbG90MSArIHBsb3QyIApgYGAKIyMgUmVncmVzcyBvdXQgZGF0YSBhbmQgcGVyZm9ybSBzY2FsaW5nCiogUmVncmVzc2luZyBvdXQgdG90YWwgY291bnRzIHBlciBjZWxsIGFuZCBwZXJjZW50Lm10IGJlZm9yZSBzY2FsaW5nLiAKKiBUYWtlIG91dCBtaXRvY2hvbmRyaWFsIGdlbmVzIGJlZm9yZSBzY2FsaW5nIChhbmFseXppbmcpIHRoZSBkYXRhIAoqIEJlY2F1c2UgbWl0b19nZW5lcyBzaG91bGRuJ3QgYmUgYWNjb3VudGVkIGZvciBjZWxsIHBvcHVsYXRpb24gYW5hbHlzaXMuCmBgYHtyfQpwcmV2aW91c190aW1lIDwtIHByb2MudGltZSgpWzNdCmFsbC5nZW5lcyA8LSByb3duYW1lcyhFc3RydXMpCkVzdHJ1cyA8LSBTY2FsZURhdGEoRXN0cnVzLCBmZWF0dXJlcyA9IGFsbC5nZW5lcywgdmFycy50by5yZWdyZXNzID0gYygibkNvdW50X1JOQSIsInBlcmNlbnQubXQiKSwgc2NhbGUubWF4ID0gMTApCiMgRXhwbGFuYXRpb25zIGJlbG93IGFyZSBmcm9tIFtTZXVyYXRdKGh0dHBzOi8vc2F0aWphbGFiLm9yZy9zZXVyYXQvYXJjaGl2ZS92My4wL2NlbGxfY3ljbGVfdmlnbmV0dGUuaHRtbCkKIyB2YXJzLnRvLnJlZ3Jlc3MgPSBSZWdyZXNzT3V0IGluIFNldXJhdCB2ZXJzaW9uIDEuNCBvciBsb3dlcgojIEhvd2V2ZXIsIGFzIHRoZSByZXN1bHRzIG9mIHRoaXMgcHJvY2VkdXJlIGFyZSBzdG9yZWQgaW4gdGhlIHNjYWxlZCBkYXRhIHNsb3QgKHRoZXJlZm9yZSBvdmVyd3JpdGluZyB0aGUgb3V0cHV0IG9mIFNjYWxlRGF0YSkgCiMgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG1lcmdlZCBpbnRvIHRoZSBTY2FsZURhdGEgZnVuY3Rpb24gaXRzZWxmLgpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCiMjIFBlcmZvcm0gbGluZWFyIGRpbWVuc2lvbmFsIHJlZHVjdGlvbiAoUENBKQpgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXMgPC0gUnVuUENBKEVzdHJ1cywgZmVhdHVyZXMgPSBWYXJpYWJsZUZlYXR1cmVzKG9iamVjdCA9IEVzdHJ1cykpCnByb2MudGltZSgpWzNdIC0gcHJldmlvdXNfdGltZQpgYGAKCiMjIEV4YW1pbmUgYW5kIHZpc3VhbGl6ZSBQQ0EgcmVzdWx0cyBhIGZldyBkaWZmZXJlbnQgd2F5cwpgYGB7cn0KcHJpbnQoRXN0cnVzW1sicGNhIl1dLCBkaW1zID0gMTo1LCBuZmVhdHVyZXMgPSA1KQpgYGAKCmBgYHtyfQpWaXpEaW1Mb2FkaW5ncyhFc3RydXMsIGRpbXMgPSAxOjIsIHJlZHVjdGlvbiA9ICJwY2EiKQpgYGAKCmBgYHtyfQpEaW1QbG90KEVzdHJ1cywgcmVkdWN0aW9uID0gInBjYSIpICsgZ2d0aXRsZShsYWJlbCA9ICdJbmNsdWRpbmcgaW1tdW5lIGNlbGxzJykgCmdnc2F2ZShmaWxlbmFtZSA9ICJQQ0FfSW5jbHVkaW5nX2ltbXVuZV9jZWxscy5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9NYW51YWxseVJlbW92ZUdlbmVzL0ZpZ3VyZXMvIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChFc3RydXMsIHJlZHVjdGlvbiA9ICJwY2EiLCBmZWF0dXJlcyA9IGMoJ092Z3AxJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRm94ajEnLCAnSWdmMScsICdQZHhrJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRnh5ZDQnLCAnQnNnJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2VycGluYTFlJywgJ0tydDE5JykpCmdnc2F2ZShmaWxlbmFtZSA9ICJQQ0FfSW5jbHVkaW5nX2ltbXVuZV9jZWxsczEucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvTWFudWFsbHlSZW1vdmVHZW5lcy9GaWd1cmVzLyIpCmBgYApgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChFc3RydXMsIHJlZHVjdGlvbiA9ICJwY2EiLCBmZWF0dXJlcyA9IGMoJ0RjbicsICdQYXg4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFcGh4MicsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BlY2FtMScsICdQZGdmcmEnLCAnTXloMTEnLCAnQXRwMmI0JywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Q1MicpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiUENBX0luY2x1ZGluZ19pbW11bmVfY2VsbHMyLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKCiMjIERldGVybWluZSB0aGUg4oCYZGltZW5zaW9uYWxpdHnigJkgb2YgdGhlIGRhdGEKKiBTZXVyYXQgdHV0b3JpYWwgdXNlcyBKYWNrU3RyYXcoKSBhbmQgYW5kIFNjb3JlSmFja1N0cmF3IHRvIGRldGVybWluZSBkaW1lbnNpb25hbGl0eQoqIHRoZSBzeW50YXggaXM6IAogICsgRXN0cnVzIDwtIEphY2tTdHJhdyhFc3RydXMsIG51bS5yZXBsaWNhdGUgPSAxMDApCiAgKyBFc3RydXMgPC0gU2NvcmVKYWNrU3RyYXcoRXN0cnVzLCBkaW1zID0gMToyMCkKKiBIb3dldmVyLCBpdCB0YWtlcyB2ZXJ5IGxvbmcuIAoqIEFuIGVsYm93IHBsb3Qgb2Z0ZW4gY29ycmVzcG9uZHMgd2VsbCBlbm91Z2ggd2l0aCB0aGUgc2lnbmlmaWNhbnQgZGltcyBhbmQgaXMgbXVjaCBmYXN0ZXIgdG8gcnVuIHRoYW4gSmFja3N0cmF3CiogQWNjb3JkaW5nIHRvIHRoZSBncmFwaCBiZWxvdywgY2hvb3NlIHRoZSBmaXJzdCAyMiBwcmluY2lwbGUgY29tcG9uZW50cyB0byB1c2UKYGBge3J9CkVsYm93UGxvdChFc3RydXMsIG5kaW1zID0gNDApCmBgYAojIyBGaW5kIG5laWdoYm9ycwoqIERpbXMgPSBkaW1lbnNpb25zID0gZGV0ZXJtaW5lZCBhcyAyMiBmcm9tIHRoZSBhYm92ZSBzdGVwCmBgYHtyfQpwcmV2aW91c190aW1lIDwtIHByb2MudGltZSgpWzNdCkVzdHJ1c19uZXcgPC0gRmluZE5laWdoYm9ycyhFc3RydXMsIGRpbXMgPSAxOjIyLCBrLnBhcmFtID0gMTApCnByb2MudGltZSgpWzNdIC0gcHJldmlvdXNfdGltZQpgYGAKIyMgRmluZCBjZWxsIGNsdXN0ZXJzIHVzaW5nIExlaWRlbidzIG1ldGhvZApgYGB7cn0KIyBBbGdvcml0aG0gPSA0IHNwZWNpZmllcyBMZWlkZW4ncyBtZXRob2QKcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXNfbmV3IDwtIEZpbmRDbHVzdGVycyhFc3RydXNfbmV3LCByZXNvbHV0aW9uID0gMC4xNCwgYWxnb3JpdGhtID0gNCkKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAojIyBDb25zdHJ1Y3RpbmcgVU1BUCBwbG90CmBgYHtyfQpwcmV2aW91c190aW1lIDwtIHByb2MudGltZSgpWzNdCkVzdHJ1c19uZXcgPC0gUnVuVU1BUChFc3RydXNfbmV3LCBkaW0gPSAxOjIyKSAKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAojIyBWaXN1YWxpemF0aW9uCmBgYHtyfQpEaW1QbG90KEVzdHJ1c19uZXcsIHJlZHVjdGlvbiA9ICJ1bWFwIikgKyBnZ3RpdGxlKGxhYmVsID0gJ0luY2x1ZGluZyBpbW11bmUgY2VsbHMnKQpnZ3NhdmUoZmlsZW5hbWUgPSAiVU1BUF9JbmNsdWRpbmdfaW1tdW5lX2NlbGxzLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKYGBge3IsIGZpZy53aWR0aD0xMn0KRmVhdHVyZVBsb3QoRXN0cnVzX25ldywgcmVkdWN0aW9uID0gInVtYXAiLCBmZWF0dXJlcyA9IGMoJ092Z3AxJywgJ0ZveGoxJywgJ0RjbicsICdTZXJwaW5hMWUnLCAnU3BycjJmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Z4eWQ0JywgJ0x5NmEnLCAnRXBjYW0nLCAnS3J0MTknLCAnVmltJywgJ1BkZ2ZyYScpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiVU1BUF9JbmNsdWRpbmdfaW1tdW5lX2NlbGxzMS5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9NYW51YWxseVJlbW92ZUdlbmVzL0ZpZ3VyZXMvIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChFc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIsIGZlYXR1cmVzID0gYygnTXloMTEnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEa2syJywgJ1NsaXRyazYnLCAnRGlvMicsICdTbW9jMicsICdUZXMnLCAnRGFiMScsICdDYW1rMWQnLCAnUGVjYW0xJywgJ0NkNTInLCdNa2k2NycpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiVU1BUF9JbmNsdWRpbmdfaW1tdW5lX2NlbGxzMi5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9NYW51YWxseVJlbW92ZUdlbmVzL0ZpZ3VyZXMvIikKYGBgCiMjIFJlbW92aW5nIGltbXVuZSBjZWxscwpgYGB7ciwgZmlnLndpZHRoPTEyfQpzdWJfRXN0cnVzID0gc3Vic2V0KHggPSBFc3RydXNfbmV3LCBpZGVudCA9IGMoMSwyLDMsNCw1LDYsNyw5LDEwLDEyKSkKRGltUGxvdChzdWJfRXN0cnVzLCByZWR1Y3Rpb24gPSAidW1hcCIpICsgZ2d0aXRsZShsYWJlbCA9ICdJbW11bmUgY2VsbHMgcmVtb3ZlZCcpCmdnc2F2ZShmaWxlbmFtZSA9ICJVTUFQX0ltbXVuZV9jZWxsc19yZW1vdmVkLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKYGBge3IsIGZpZy53aWR0aD0xMn0KRmVhdHVyZVBsb3Qoc3ViX0VzdHJ1cywgcmVkdWN0aW9uID0gInVtYXAiLCBmZWF0dXJlcyA9IGMoJ092Z3AxJywgJ0ZveGoxJywgJ0Z4eWQ0JywgJ0N4Y2wxNycsICdNeWgxMScsICdDZDUyJywgJ1R3aXN0MicsICdQZWNhbTEnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfSW1tdW5lX2NlbGxzX3JlbW92ZWQxLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKYGBge3IsIGZpZy53aWR0aD0xMn0KRmVhdHVyZVBsb3Qoc3ViX0VzdHJ1cywgcmVkdWN0aW9uID0gInVtYXAiLCBmZWF0dXJlcyA9IGMoJ1BkZ2ZyYScsICdFcGh4MicsICdEY24nLCAnS3J0MTknLCAnRXBjYW0nLCAnVmltJywnTWtpNjcnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfSW1tdW5lX2NlbGxzX3JlbW92ZWQyLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKYGBge3J9CnN1Yl9Fc3RydXMKYGBgCiogQWZ0ZXIgcmVtb3ZpbmcgaW1tdW5lIGNlbGxzLCB0aGUgZGF0YXNldCBpcyBsZWZ0IHdpdGg6CiAgKyAxOTQxOCBnZW5lcwogICsgMjMxOCBjZWxscwoKIyMgUmUtcnVuIGFuYWx5c2lzIGFmdGVyIGV4Y2x1ZGluZyBpbW11bmUgY2VsbHMKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10Kc3ViX0VzdHJ1cyA8LSBSdW5QQ0Eoc3ViX0VzdHJ1cywgZmVhdHVyZXMgPSBWYXJpYWJsZUZlYXR1cmVzKG9iamVjdCA9IHN1Yl9Fc3RydXMpKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEyfQpEaW1QbG90KHN1Yl9Fc3RydXMsIHJlZHVjdGlvbiA9ICJwY2EiKSArIGdndGl0bGUobGFiZWwgPSAnSW1tdW5lIGNlbGxzIHJlbW92ZWQnKQpnZ3NhdmUoZmlsZW5hbWUgPSAiUENBX0ltbXVuZV9jZWxsc19yZW1vdmVkLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXMsIHJlZHVjdGlvbiA9ICJwY2EiLCBmZWF0dXJlcyA9IGMoJ0VzcjEnLCAnT3ZncDEnLCAnRm94ajEnLCAnRnh5ZDQnLCAnRXBoeDInLCAnRGNuJykpCmdnc2F2ZShmaWxlbmFtZSA9ICJQQ0FfSW1tdW5lX2NlbGxzX3JlbW92ZWQxLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXMsIHJlZHVjdGlvbiA9ICJwY2EiLCBmZWF0dXJlcyA9IGMoJ0ZvcycsICdLY25lMycsICdTZXJwaW5hMWUnLCAnQ3JhYnAyJywgJ1BncicsICdWaW0nKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlBDQV9JbW11bmVfY2VsbHNfcmVtb3ZlZDIucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvTWFudWFsbHlSZW1vdmVHZW5lcy9GaWd1cmVzLyIpCmBgYApgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpzdWJfRXN0cnVzX25ldyA8LSBGaW5kTmVpZ2hib3JzKHN1Yl9Fc3RydXMsIGRpbXMgPSAxOjIyKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCgpgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpzdWJfRXN0cnVzX25ldyA8LSBGaW5kQ2x1c3RlcnMoc3ViX0VzdHJ1c19uZXcsIHJlc29sdXRpb24gPSAwLjA0LCBhbGdvcml0aG0gPSA0KQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCgpgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpzdWJfRXN0cnVzX25ldyA8LSBSdW5VTUFQKHN1Yl9Fc3RydXNfbmV3LCBkaW0gPSAxOjIyKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEwfQpEaW1QbG90KHN1Yl9Fc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIpICsgZ2d0aXRsZShsYWJlbCA9ICdSZXNjYWxlIFVNQVAgYWZ0ZXIgcmVtb3ZpbmcgSW1tdW5lIGNlbGxzJykKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfUmVzY2FsZS5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9NYW51YWxseVJlbW92ZUdlbmVzL0ZpZ3VyZXMvIikKYGBgCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIsIGZlYXR1cmVzID0gYygnT3ZncDEnLCAnRm94ajEnLCAnQ3JhYnAyJywgJ015aDExJywgJ1d0MScsICdTMTAwZycsICdTcHJyMmYnLAogICAgICAgICAgICAgICAgICAnRnh5ZDQnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfUmVzY2FsZTEucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvTWFudWFsbHlSZW1vdmVHZW5lcy9GaWd1cmVzLyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMn0KRmVhdHVyZVBsb3Qoc3ViX0VzdHJ1c19uZXcsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZmVhdHVyZXMgPSBjKCdEY24nLCAnUGF4OCcsICdQYXgyJywgJ1R3aXN0MicsICdJZ2YxJywgJ1NlcnBpbmExZScsICdQZGdmcmEnLCAnS3J0MTknLCAnTWtpNjcnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfUmVzY2FsZTIucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvTWFudWFsbHlSZW1vdmVHZW5lcy9GaWd1cmVzLyIpCmBgYAojIyBNYXJrZXIgZ2VuZXMKYGBge3J9Cm1hcmtlcl9nZW5lcyA9IGMoJ0VwY2FtJywgJ0tydDE1JywnS3J0OCcsJ0tydDE5JywnVmltJywnUGRnZnJhJywnVHdpc3QyJywgJ1NwcnIyZicsICdGeHlkNCcsICdJZ2ZicDYnLAogICAgICAgICAgICAgICAgICdBY3RhMicsICdNeWgxMScsJ0ZveGoxJywnT3ZncDEnLCdXdDEnLCdTZXJwaW5hMWUnLCdTMTAwZycsJ1BlY2FtMScpCmBgYAoKIyMgVU1BUCBmb3IgbWFya2VyIGdlbmVzCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIsIGZlYXR1cmVzID0gYygnRXBjYW0nLCAnS3J0MTUnLCdLcnQ4JywnS3J0MTknLCdWaW0nLCdQZGdmcmEnLCdUd2lzdDInLCAnU3BycjJmJywgJ0Z4eWQ0JykpCmdnc2F2ZShmaWxlbmFtZSA9ICJVTUFQX2Zvcl9NYXJrZXJfZ2VuZXMxLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIsIGZlYXR1cmVzID0gYygnSWdmYnA2JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBY3RhMicsICdNeWgxMScsJ0ZveGoxJywnT3ZncDEnLCdXdDEnLCdTZXJwaW5hMWUnLCdTMTAwZycsJ1BlY2FtMScpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiVU1BUF9mb3JfTWFya2VyX2dlbmVzMi5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9NYW51YWxseVJlbW92ZUdlbmVzL0ZpZ3VyZXMvIikKYGBgCgojIyBSZW5hbWUgY2x1c3RlcnMKYGBge3J9CkNsdXN0ZXIubmFtZXMgPC0gYygnMSBDaWxpYXRlZF9JbmZBbXAnLAogICAgICAgICAgICAgICAgICAgJzIgU2VjcmV0b3J5X0luZkFtcCcsCiAgICAgICAgICAgICAgICAgICAnMyBFcGl0aGVsaWFsX3N1YnNldCcsCiAgICAgICAgICAgICAgICAgICAnNCBGaWJyb2JsYXN0IFBkZ2ZyYSsnLAogICAgICAgICAgICAgICAgICAgJzUgU2VjcmV0b3J5X0lzdGhVVEonLAogICAgICAgICAgICAgICAgICAgJzYgRmlicm9ibGFzdCBQZGdmcmEtJywKICAgICAgICAgICAgICAgICAgICc3IE11c2NsZScpCm5hbWVzKENsdXN0ZXIubmFtZXMpIDwtIGxldmVscyhzdWJfRXN0cnVzX25ldykKc3ViX0VzdHJ1c19uZXcgPC0gUmVuYW1lSWRlbnRzKHN1Yl9Fc3RydXNfbmV3LCBDbHVzdGVyLm5hbWVzKQpEaW1QbG90KHN1Yl9Fc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIsIHB0LnNpemUgPSAwLjUpICsgc2NhbGVfY29sb3JfbWFudWFsKGxhYmVscyA9IENsdXN0ZXIubmFtZXMsdmFsdWVzPWMoJ2dyZWVuJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZCcsJ2JsdWUnLCdvcmFuZ2UnLCdncmV5JywneWVsbG93JywncGluaycsJ3B1cnBsZScpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiVU1BUF9DbHVzdGVyc19uYW1lcy5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9NYW51YWxseVJlbW92ZUdlbmVzL0ZpZ3VyZXMvIikKYGBgCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkRvdFBsb3Qoc3ViX0VzdHJ1c19uZXcsIGZlYXR1cmVzID0gbWFya2VyX2dlbmVzLCBncm91cC5ieSA9IHN1Yl9Fc3RydXNfbmV3QG1ldGEuZGF0YSRpZGVudCkgKyAgCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKSArCiAgc2NhbGVfeV9kaXNjcmV0ZShsYWJlbHMgPSBDbHVzdGVyLm5hbWVzKQpnZ3NhdmUoZmlsZW5hbWUgPSAiRG90UGxvdF9mb3JfTWFya2VyX2dlbmVzLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL01hbnVhbGx5UmVtb3ZlR2VuZXMvRmlndXJlcy8iKQpgYGAKIyMgTnVtYmVyIG9mIGNlbGxzIGluIGVhY2ggY2x1c3RlcnMKYGBge3J9CnRhYmxlKHN1Yl9Fc3RydXNfbmV3QGFjdGl2ZS5pZGVudCwgc3ViX0VzdHJ1c19uZXdAbWV0YS5kYXRhJG9yaWcuaWRlbnQpCmBgYAoKIyMgRXh0cmFjdCB0b3AgZ2VuZXMgZm9yIGVhY2ggY2x1c3RlcgoqIERlZmF1bHQgbWV0aG9kIG9mIGZpbmRpbmcgaGlnaGx5IGV4cHJlc3NlZCBnZW5lcyBmb3IgRmluZEFsbE1hcmtlcnMgaXMgV2lsY294b24gUmFuayBTdW0gdGVzdApgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpzdWJfRXN0cnVzX25ld19tYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKHN1Yl9Fc3RydXNfbmV3LCBvbmx5LnBvcyA9IFRSVUUsIG1pbi5wY3QgPSAwLjI1LCBsb2dmYy50aHJlc2hvbGQgPSAwLjI1KQpzdWJfRXN0cnVzX25ld19tYXJrZXJzICU+JQogICAgZ3JvdXBfYnkoY2x1c3RlcikgJT4lCiAgICBzbGljZV9tYXgobiA9IDIwLCBvcmRlcl9ieSA9IGF2Z19sb2cyRkMpCnByb2MudGltZSgpWzNdIC0gcHJldmlvdXNfdGltZQpgYGAKIyMgSGVhdCBtYXAgZm9yIHRvcCAxMCBnZW5lcyBpbiBlYWNoIGNsdXN0ZXIKYGBge3IsIGZpZy53aWR0aD0xMH0Kc3ViX0VzdHJ1c19uZXdfbWFya2VycyAlPiUKICAgIGdyb3VwX2J5KGNsdXN0ZXIpICU+JQogICAgdG9wX24obiA9IDEwLCB3dCA9IGF2Z19sb2cyRkMpIC0+IHRvcDEwCkRvSGVhdG1hcChzdWJfRXN0cnVzX25ldywgZmVhdHVyZXMgPSB0b3AxMCRnZW5lKSArIE5vTGVnZW5kKCkKZ2dzYXZlKGZpbGVuYW1lID0gIkhlYXRNYXBfVG9wMTBfZ2VuZXMucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvTWFudWFsbHlSZW1vdmVHZW5lcy9GaWd1cmVzLyIpCmBgYApgYGB7cn0Kc2F2ZVJEUyhzdWJfRXN0cnVzX25ldywgZmlsZSA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvTWFudWFsbHlSZW1vdmVHZW5lcy9Fc3RydXNfc3Vic2V0X2FuYWx5emVkLnJkcyIpCmBgYAoK